In many computing systems, low-level instruction code, or firmware, is used to configure hardware components in preparation for booting an operating system. For example, and without limitation, some computing systems utilize firmware that is compliant with a specification released by the Unified Extensible Firmware Interface (“UEFI”) Forum (the “UEFI Specification”). Such a firmware might be referred to herein as a UEFI Specification-compliant firmware, a UEFI-compliant firmware, or a UEFI firmware. Other types of firmware implementations perform similar functions.
Many types of firmware provide user interfaces (“UIs”) through which users can configure various aspects of the operation of the computer upon which the firmware executes. For example, and without limitation, many types of firmware provide a setup menu that can be accessed when a computer first starts up. Through the setup menu, a user can specify values for various parameters that are utilized to control aspects of the operation of the computer. Some common parameters that can be specified include, but are not limited to, boot order, firmware setup defaults, a firmware password, the current date and time, hard drive settings, processor and memory settings, and others.
In some scenarios, firmware developers enable original equipment manufacturers (“OEMs”) that manufacture motherboards that use the firmware, to customize the setup menu to their preference. For example, and without limitation, an OEM might choose to hide menu items or pages in a setup menu for setting certain parameters for a particular hardware configuration. In order to enable customization of the setup menu in this manner, a firmware developer can provide an OEM with a file containing data that defines the setup menu and the default values for modifiable parameters. The OEM can then edit the contents of the file in order to customize the setup menu according to their preference.
Customization of such a file, however, requires detailed knowledge of the language grammar utilized in the file to define the contents of the setup menu. Moreover, this type of customization requires the OEM to manually manipulate the contents of the file using a text editor, or another type of editor, which can be time-consuming and error-prone. Additionally, if the firmware developer issues an updated file, the OEM will have to perform the same configuration changes once again on an updated file. These considerations can result in an inefficient firmware development process, errors in the setup menu, non-optimal values for setup parameters and, ultimately, inefficient utilization of computing resources and poor performance.
It is with respect to these and other considerations that the disclosure made herein is presented.